package net.app.zoneland.oauth.exception;

import net.app.zoneland.common.core.vo.Result;
import net.app.zoneland.oauth.enums.OAuthEnums;
import org.springframework.security.oauth2.common.exceptions.OAuth2Exception;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @Description
 * @Author LENOVO
 * @CreateTime 2020/12/27 16:50
 * @Version: 1.0
 */
@RestControllerAdvice
public class RestControllerExceptionAdvice {

        //判断oauth异常,自定义返回数据
        @ExceptionHandler
        public Object exception(OAuth2Exception e){
            String code=e.getOAuth2ErrorCode();
            String msg="";
            if (OAuthEnums.INVALID_SCOPE_CODE.getErrorCode().equals(code)) {
                msg=OAuthEnums.INVALID_SCOPE_CODE.getMessage();
              } else if (OAuthEnums.INVALID_CLIENT_CODE.getErrorCode().equals(code)) {
                msg=OAuthEnums.INVALID_CLIENT_CODE.getMessage();
              } else if (OAuthEnums.UNAUTHORIZED_CLIENT_CODE.getErrorCode().equals(code)) {
                 msg=OAuthEnums.UNAUTHORIZED_CLIENT_CODE.getMessage();
               } else if (OAuthEnums.INVALID_GRANT_CODE.getErrorCode().equals(code)) {
                msg=OAuthEnums.INVALID_GRANT_CODE.getMessage();
               } else if (OAuthEnums.INVALID_TOKEN_CODE.getErrorCode().equals(code)) {
                msg=OAuthEnums.INVALID_TOKEN_CODE.getMessage();
               } else if (OAuthEnums.INVALID_REQUEST_CODE.getErrorCode().equals(code)) {
                msg=OAuthEnums.INVALID_REQUEST_CODE.getMessage();
               } else if (OAuthEnums.REDIRECT_URI_CODE.getErrorCode().equals(code)) {
                msg=OAuthEnums.REDIRECT_URI_CODE.getMessage();
               } else if (OAuthEnums.UNSUPPORTED_GRANT_CODE.getErrorCode().equals(code)) {
                msg=OAuthEnums.UNSUPPORTED_GRANT_CODE.getMessage();
               } else if (OAuthEnums.UNSUPPORTED_RESPONSE_CODE.getMessage().equals(code)) {
                 msg=OAuthEnums.UNSUPPORTED_RESPONSE_CODE.getMessage();
               } else {
                msg=OAuthEnums.ACCESS_DENIDE_CODE.getMessage();
               }
           return Result.error(msg);
        }
}
